package com.example.jpa.query.repository;

import com.example.jpa.query.entities.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface UserRepository extends JpaRepository<User,Long> {

    /**
     *
     * @param username
     * @return 根据用户名获取用户的所有信息 {@link List}
     */
//    @Query(value = "select * from user where username=?1")
    List<User> findByUsername(String username);

    /**
     *
     * @param username
     * @param age
     * @return 根据用户名和年龄查询用户的所有信息
     */
    List<User> findByUsernameAndAge(String username,Integer age);


    // and的查询关系
    List<User> findByUsernameAndEmail(String lastname, String firstname);
    // 包含distinct去重，or 的 sql 语法
    List<User> getDistinctByUsernameOrAge(String username,Integer age);
    // 根据lastname字段查询并忽略大小写
    List<User> queryByUsernameIgnoreCase(String username);
    // 根据username和email查询，并且忽略大小写
    List<User> findByUsernameAndEmailAllIgnoreCase(String username, String email);
    // 对查询结果根据username正序排序
    @Transactional
    void removeByUsernameIsStartingWith(String username);
    // 对查询结果根据 age 倒序排序
    @Transactional
    void removeByUsernameStartsWith(String username);

}
